Main - Lilliput - OpenJDK Wiki
Main - Lilliput - OpenJDK Wiki
OpenJDK
の
Project Lilliput
は、
64ビット HotSpot JVM
における
オブジェクトヘッダ
を128ビットから64ビット(将来的には32ビット)に削減することを目標とするプロジェクト
背景と動機
現在の
オブジェクトヘッダ
は
ロックワード
64ビットと
クラスポインタ
64ビットの計128ビット
平均オブジェクトサイズが5〜6ワードの中、ヘッダが2ワードを占める非効率な状態
ヘッダ削減により
ヒープ使用量
の削減、
GC
活動の低減、
キャッシュ局所性
の向上が見込まれる
技術的課題
ロックワード
は
スタックロック
・
モニター
・
ハッシュコード
・
GC転送ポインタ
など多目的に使用
クラスポインタ
はすべての型チェックや仮想呼び出し解決に使用され、性能上最重要
ロック・
ハッシュコード
・
配列長
はそれぞれ仕様上の制約があり変更が困難
主なアプローチ
クラスポインタ
の圧縮(32ビット→20ビット以下)またはクラスIDによる間接参照
ロック機構の刷新:
Project Loom
との協調を視野に入れた
Javaロック
への移行検討
ハッシュコード
の遅延割り当て・サイドテーブル管理・再計算方式の採用
ZGC
はすでにサイドテーブルを使い転送情報をヘッダに持たない設計
関連プロジェクト
Project Valhalla
とは相補的な関係(Valhallaはオブジェクトグラフの平坦化、Lilliputはヘッダ削減)
Project Loom
はロック設計に影響する可能性があり、連携が必要
Written by Claude Code